<h1 id="chmod">chmod</h1>
<p>用来变更文件或目录的权限</p>
<h2 id="补充说明">补充说明</h2>
<p><strong>chmod命令</strong> 用来变更文件或目录的权限。在UNIX系统家族里，文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分，另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限，设置方式采用文字或数字代号皆可。符号连接的权限无法变更，如果用户对符号连接修改权限，其改变会作用在被连接的原始文件。</p>
<p>权限范围的表示法如下：</p>
<p><code>u</code> User，即文件或目录的拥有者；<br />
<code>g</code> Group，即文件或目录的所属群组；<br />
<code>o</code> Other，除了文件或目录拥有者或所属群组之外，其他用户皆属于这个范围；<br />
<code>a</code> All，即全部的用户，包含拥有者，所属群组以及其他用户；<br />
<code>r</code> 读取权限，数字代号为“4”;<br />
<code>w</code> 写入权限，数字代号为“2”；<br />
<code>x</code> 执行或切换权限，数字代号为“1”；<br />
<code>-</code> 不具任何权限，数字代号为“0”；<br />
<code>s</code> 特殊功能说明：变更文件或目录的权限。</p>
<h3 id="语法">语法</h3>
<pre><code class="language-bash">chmod(选项)(参数)</code></pre>
<h3 id="选项">选项</h3>
<div class="sourceCode" id="cb2"><pre><code class="language-bash"><a class="sourceLine" id="cb2-1" data-line-number="1"><span class="ex">u</span>  # 操作对象简称，用户user，文件或目录的所有者。</a>
<a class="sourceLine" id="cb2-2" data-line-number="2"><span class="ex">g</span>  # 操作对象简称，同组用户group，文件或目录所属群组</a>
<a class="sourceLine" id="cb2-3" data-line-number="3"><span class="ex">o</span>  # 操作对象简称，其它用户others</a>
<a class="sourceLine" id="cb2-4" data-line-number="4"><span class="ex">a</span>  # 操作对象简称，所有用户all，系统默认使用此项</a>
<a class="sourceLine" id="cb2-5" data-line-number="5"><span class="ex">+</span>  # 权限操作符，添加某些权限</a>
<a class="sourceLine" id="cb2-6" data-line-number="6"><span class="ex">-</span>  # 权限操作符，取消某些权限</a>
<a class="sourceLine" id="cb2-7" data-line-number="7">=  # 权限操作符，设置文件的权限为给定的权限</a>
<a class="sourceLine" id="cb2-8" data-line-number="8"><span class="ex">r</span>  # 权限设定（英文），表示可读权限</a>
<a class="sourceLine" id="cb2-9" data-line-number="9"><span class="fu">w</span>  # 权限设定（英文），表示可写权限</a>
<a class="sourceLine" id="cb2-10" data-line-number="10"><span class="ex">x</span>  # 权限设定（英文），表示可执行权限</a>
<a class="sourceLine" id="cb2-11" data-line-number="11"><span class="ex">-</span>  # 权限设定（英文字符），表示没有权限</a>
<a class="sourceLine" id="cb2-12" data-line-number="12"><span class="ex">X</span>  # 权限设定，如果目标文件是可执行文件或目录，可给其设置可执行权限</a>
<a class="sourceLine" id="cb2-13" data-line-number="13"><span class="ex">s</span>  # 权限设定，设置权限suid和sgid，使用权限组合“u+s”设定文件的用户的ID位，“g+s”设置组ID位</a>
<a class="sourceLine" id="cb2-14" data-line-number="14"><span class="ex">t</span>  # 权限设定，只有目录或文件的所有者才可以删除目录下的文件</a>
<a class="sourceLine" id="cb2-15" data-line-number="15"><span class="ex">-c</span>或——changes    # 效果类似“-v”参数，但仅回报更改的部分，如果文件权限已经改变，显示其操作信息；</a>
<a class="sourceLine" id="cb2-16" data-line-number="16"><span class="ex">-f</span>或--quiet或——silent <span class="co"># 操作过程中不显示任何错误信息；</span></a>
<a class="sourceLine" id="cb2-17" data-line-number="17"><span class="ex">-R</span>或——recursive  # 递归处理，将指令目录下的所有文件及子目录一并处理；</a>
<a class="sourceLine" id="cb2-18" data-line-number="18"><span class="ex">-v</span>或——verbose    # 显示命令运行时的详细执行过程；</a>
<a class="sourceLine" id="cb2-19" data-line-number="19"><span class="ex">--reference</span>=<span class="op">&lt;</span>参考文件或目录<span class="op">&gt;</span> <span class="co"># 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同；</span></a>
<a class="sourceLine" id="cb2-20" data-line-number="20"><span class="op">&lt;</span>权限范围<span class="op">&gt;</span><span class="ex">+</span><span class="op">&lt;</span>权限设置<span class="op">&gt;</span> <span class="co"># 开启权限范围的文件或目录的该选项权限设置；</span></a>
<a class="sourceLine" id="cb2-21" data-line-number="21"><span class="op">&lt;</span>权限范围<span class="op">&gt;</span><span class="ex">-</span><span class="op">&lt;</span>权限设置<span class="op">&gt;</span> <span class="co"># 关闭权限范围的文件或目录的该选项权限设置；</span></a>
<a class="sourceLine" id="cb2-22" data-line-number="22"><span class="op">&lt;</span>权限范围<span class="op">&gt;</span>=<span class="op">&lt;</span>权限设置<span class="op">&gt;</span> <span class="co"># 指定权限范围的文件或目录的该选项权限设置；</span></a>
<a class="sourceLine" id="cb2-23" data-line-number="23"><span class="ex">--help</span>    # 显示帮助信息</a>
<a class="sourceLine" id="cb2-24" data-line-number="24"><span class="ex">--version</span> <span class="co"># 显示版本信息</span></a></code></pre></div>
<h3 id="参数">参数</h3>
<p>权限模式：指定文件的权限模式；<br />
文件：要改变权限的文件。</p>
<h3 id="知识扩展和实例">知识扩展和实例</h3>
<p>Linux用 户分为：拥有者、组群(Group)、其他（other），Linux系统中，预设的情況下，系统中所有的帐号与一般身份使用者，以及root的相关信 息， 都是记录在<code>/etc/passwd</code>文件中。每个人的密码则是记录在<code>/etc/shadow</code>文件下。 此外，所有的组群名称记录在<code>/etc/group</code>內！</p>
<p>linux文件的用户权限的分析图</p>
<div class="sourceCode" id="cb3"><pre><code class="language-bash"><a class="sourceLine" id="cb3-1" data-line-number="1">  <span class="ex">-rw-r--r--</span>   1 user  staff   651 Oct 12 12:53 .gitmodules</a>
<a class="sourceLine" id="cb3-2" data-line-number="2"><span class="co"># ↑╰┬╯╰┬╯╰┬╯</span></a>
<a class="sourceLine" id="cb3-3" data-line-number="3"><span class="co"># ┆ ┆  ┆  ╰┈ 0 其他人</span></a>
<a class="sourceLine" id="cb3-4" data-line-number="4"><span class="co"># ┆ ┆  ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ g 属组</span></a>
<a class="sourceLine" id="cb3-5" data-line-number="5"><span class="co"># ┆ ╰┈┈┈┈ u 属组</span></a>
<a class="sourceLine" id="cb3-6" data-line-number="6"><span class="co"># ╰┈┈ 第一个字母 `d` 代表目录，`-` 代表普通文件</span></a></code></pre></div>
<p>例：rwx　rw-　r–</p>
<p>r=读取属性　　//值＝4<br />
w=写入属性　　//值＝2<br />
x=执行属性　　//值＝1</p>
<div class="sourceCode" id="cb4"><pre><code class="language-bash"><a class="sourceLine" id="cb4-1" data-line-number="1"><span class="fu">chmod</span> u+x,g+w f01　　# 为文件f01设置自己可以执行，组员可以写入的权限</a>
<a class="sourceLine" id="cb4-2" data-line-number="2"><span class="fu">chmod</span> u=rwx,g=rw,o=r f01</a>
<a class="sourceLine" id="cb4-3" data-line-number="3"><span class="fu">chmod</span> 764 f01</a>
<a class="sourceLine" id="cb4-4" data-line-number="4"><span class="fu">chmod</span> a+x f01　　    # 对文件f01的u,g,o都设置可执行属性</a></code></pre></div>
<p>文件的属主和属组属性设置</p>
<div class="sourceCode" id="cb5"><pre><code class="language-bash"><a class="sourceLine" id="cb5-1" data-line-number="1"><span class="fu">chown</span> user:market f01　　# 把文件f01给uesr，添加到market组</a>
<a class="sourceLine" id="cb5-2" data-line-number="2"><span class="ex">ll</span> -d f1  查看目录f1的属性</a></code></pre></div>
<p>将<code>/home/wwwroot/</code>里的所有文件和文件夹设置为<code>755</code>权限</p>
<p>(1)直接指定路径修改</p>
<div class="sourceCode" id="cb6"><pre><code class="language-bash"><a class="sourceLine" id="cb6-1" data-line-number="1"><span class="fu">chmod</span> -R  755 /home/wwwroot/*</a></code></pre></div>
<p>(2)手动进入该目录修改权限（并显示详细过程）</p>
<div class="sourceCode" id="cb7"><pre><code class="language-bash"><a class="sourceLine" id="cb7-1" data-line-number="1"><span class="bu">cd</span> /home/wwwroot</a>
<a class="sourceLine" id="cb7-2" data-line-number="2"><span class="fu">chmod</span> -Rv  755 *       #注意：“*”表示通配符，指的是所有文件和文件</a>
<a class="sourceLine" id="cb7-3" data-line-number="3"><span class="fu">sudo</span> chmod o+rw /shared <span class="co">#设置文件夹权限以保证其余用户可以访问它。</span></a></code></pre></div>
<!-- Linux命令行搜索引擎：https://jaywcjlove.github.io/linux-command/ -->
